var dao=require("./server/dao");
var crawler = require("./server/crawler");
var logger = require('./conf/log4').logger('app');
var cronJob = require('cron').CronJob;
var cookie = require('./server/cookie');
var common = require('./conf/common');


common.setSource('us');


var job1 = new cronJob('1 15 11 * * 2', function(){

    var time = common.getFirstDateOfWeek(common.nextWeek());//获取下周周一
    //common.setFetchTime(time);
	common.setFetchTime(common.getTime(time));
    console.log(common.getFetchTime());

    
    var EventProxy = require('eventproxy');
    var jobEp = new EventProxy();
    var threads = 2; //设置线程数

    jobEp.on('rank_job',function () {
        for(var i =0 ;i<threads;i++){
            cookie.refresh(i,function (num) {
                crawler.loopRankJob(num,jobEp);
            });
        }
    });

    jobEp.after("rank_done",threads,function () {
        dao.findHotKeyAsin(common.getSource(),common.getFetchTime(),crawler.crawlProDetail,jobEp);
    });


    jobEp.on('comm_job',function () {
        for(var i =0 ;i<threads;i++){
            cookie.refresh(i,function (num) {
                crawler.loopHotKeyCommJob(num,jobEp);
            });
        }
    });

    jobEp.after("comm_done",threads,function () {
       dao.updateCount(common.getFetchTime());
        logger.info("---- update comm count done ----");
    });
    
    dao.findHotKey(common.getSource(),common.getFetchTime(),crawler.crawlRank,jobEp);

});
job1.start();
console.log('1 1 14 * * 3');





/**

 其中 f1 表示秒钟，f2 表示分钟，f3 表示小时，f4 表示一个月份中的第几日，f5 表示月 份，
 f6 表示一个星期中的第几天。各部分的取值含义如下（以 f1 部分为例，其他部分类 似）：

 当值为 * 时，表示每秒执行一次；
 当值为 a-b 时，表示从第 a 秒钟到第 b 秒钟这段时间内执行一次；
 当值为 n 时，表示每隔 n 秒钟执行一次；

 当值为 a-b/n 时，表示从第 a 秒钟到第 b 秒钟这段时间内每隔 n 秒钟执行一次。

 cron 模块的详细使用说明可以访问以下网址获取：
 https://npmjs.org/package/cron

 **/
